package com.cs.framework.common.util;

import org.springframework.cache.Cache;
import org.springframework.cache.CacheManager;
import org.springframework.cache.Cache.ValueWrapper;

/**
 * 缓存工具类
 * 
 * @author hedongzhou
 * 
 */
public class CacheUtils {

	/**
	 * 缓存管理器
	 */
	private static CacheManager cacheManager = null;

	/**
	 * 设置缓存管理器
	 * 
	 * @param manager
	 */
	public static void setCacheManager(CacheManager manager) {
		if (cacheManager == null) {
			cacheManager = manager;
		}
	}

	/**
	 * 添加缓存信息
	 * 
	 * @param name
	 *            缓存名称
	 * @param key
	 *            信息key
	 * @param value
	 *            信息内容
	 */
	public static void put(String name, Object key, Object value) {
		if (cacheManager != null) {
			Cache cache = cacheManager.getCache(name);
			if (cache != null) {
				cache.put(key, value);
			}
		}
	}

	/**
	 * 获取缓存信息
	 * 
	 * @param <T>
	 * @param name
	 *            缓存名称
	 * @param key
	 *            信息key
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static <T> T get(String name, Object key) {
		if (cacheManager != null) {
			Cache cache = cacheManager.getCache(name);
			if (cache != null) {
				ValueWrapper value = cache.get(key);

				if (value != null) {
					return (T) value.get();
				}
			}
		}

		return null;
	}

}
